--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
lang/README.ja.md fee9e3356259c967b89373cf94deec01e6a5e6b3 (fee9e335) Text, 21.02 KB
Tc9d1d9# Reticulum MeshChatX
[Tff7b72English](Te6edf3../README.md) | [Tff7b72Deutsch](Te6edf3README.de.md) | [Tff7b72Italiano](Te6edf3README.it.md) | [Tff7b72Русский](Te6edf3README.ru.md) | [Tff7b72中文](Te6edf3README.zh.md)
Liam Cottle 氏による Reticulum MeshChat を大幅に改修・機能拡張したフォークです。
本プロジェクトはオリジナルの Reticulum MeshChat とは独立しており、提携関係にありません。
Tff7b72- ウェブサイト: [Tff7b72meshchatx.com](Te6edf3https://meshchatx.com)
Tff7b72- ソースコード: [Tff7b72git.quad4.io/RNS-Things/MeshChatX](Te6edf3https://git.quad4.io/RNS-Things/MeshChatX)
Tff7b72- 公式 GitHub ミラー: [Tff7b72github.com/Quad4-Software/MeshChatX](Te6edf3https://github.com/Quad4-Software/MeshChatX)
Tff7b72- リリース: [Tff7b72github.com/Quad4-Software/MeshChatX](Te6edf3https://github.com/Quad4-Software/MeshChatX)
Tff7b72- 変更履歴: [Ta5d6ff`CHANGELOG.md`](../CHANGELOG.md)
Tff7b72- 寄付: [Ta5d6ff`donate.md`](../donate.md)
<a href="https://apps.obtainium.imranr.dev/redirect.html?r=obtainium://add/https://github.com/Quad4-Software/MeshChatX"><img src="https://raw.githubusercontent.com/ImranR98/Obtainium/main/assets/graphics/badge_obtainium.png" height="60" alt="Get it on Obtainium"></a>
rngit: Ta5d6ff`git clone rns://926baefe13daf5178c174f158dae1b45/quad4/MeshChatX`
NomadNet Node: Ta5d6ff`c10d80b1a42fa958c37a6cc30dc04f53:/page/index.mu`
Tc9d1d9## Reticulum MeshChat からの主な変更
Tff7b72- 通話に LXST を使用
Tff7b72- Peewee ORM を生 SQL に置き換え
Tff7b72- Axios をネイティブ Ta5d6ff`fetch` に置き換え
Tff7b72- Electron 41.x(同梱 Node 24 ランタイム)
Tff7b72- Web サーバーと同梱フロントエンドを含む Ta5d6ff`.whl` によりデプロイの選択肢を拡張
Tff7b72- i18n
Tff7b72- 依存関係管理に PNPM と Poetry
Tff7b72> [!WARNING]
Tff7b72> MeshChatX は旧バージョンの Reticulum MeshChat とのデータ互換性を保証しません。マイグレーションやテスト前にデータをバックアップしてください。
Tff7b72> [!WARNING]
Tff7b72> レガシーシステムはまだサポートされません。現在の基準は Python `>=3.11` と Node `>=24`(Electron 41 は Node 24 に揃う;`package.json` の `engines` と CI も同じライン)。
Tc9d1d9## 必要条件
Tff7b72- Python Ta5d6ff`>=3.11`(Ta5d6ff`pyproject.toml` より)
Tff7b72- Node.js Ta5d6ff`>=24`(Ta5d6ff`package.json` の Ta5d6ff`engines`)
Tff7b72- pnpm Ta5d6ff`10.33.0`(Ta5d6ff`package.json` の Ta5d6ff`packageManager`)
Tff7b72- Poetry(`Taskfile.yml` および CI ワークフローで使用)
**Browser Versions Required:**
Safari 16.4 以降、Chrome 111 以降、Firefox 128 以降(同梱 Web UI)。
Ta5d6ff```Ta5d6ffbash
task install
task lint:all
task test:all
task build:all
Ta5d6ff```
Tc9d1d9## インストール方法
環境とパッケージ形式に合わせて選んでください。
| 方法 | フロントエンド含む | アーキテクチャ | 最適な用途 |
| -------------------------- | ------------------ | ------------------------------------- | ---------------------------------------- |
| Docker イメージ | はい | Ta5d6ff`linux/amd64`, Ta5d6ff`linux/arm64` | Linux サーバーでの迅速なセットアップ |
| Python wheel (Ta5d6ff`.whl`) | はい | Python がサポートする全アーキテクチャ | Node ビルド不要のヘッドレス/Web サーバー |
| Linux AppImage | はい | Ta5d6ff`x64`, Ta5d6ff`arm64` | ポータブルデスクトップ |
| Debian パッケージ (Ta5d6ff`.deb`) | はい | Ta5d6ff`x64`, Ta5d6ff`arm64` | Debian/Ubuntu |
| RPM パッケージ (Ta5d6ff`.rpm`) | はい | 公開用 CI ランナーに依存 | Fedora/RHEL/openSUSE |
| ソースから | ローカルビルド | ホストアーキテクチャ | 開発・カスタムビルド |
備考:
Tff7b72- GitHub Actions はタグ付きリリース(Linux wheel / AppImage / deb / rpm、Windows、macOS、Flatpak、dev/master 上のタグ時の Android APK、SLSA、ドラフトリリース)を 1 回のワークフローでビルドします: Ta5d6ff`.github/workflows/build-release.yml`。コンテナイメージは Ta5d6ff`.github/workflows/docker.yml`。ブランチと PR の Android CI は Ta5d6ff`.github/workflows/android-build.yml`。
Tff7b72- Linux Ta5d6ff`x64` および Ta5d6ff`arm64` の AppImage + DEB は GitHub でビルド。RPM も試行し、成果物があればアップロードします。
Tc9d1d9## Docker
Tff7b72- **Docker Hub:** Ta5d6ff`quad4io/meshchatx`
Tff7b72- **GHCR:** Ta5d6ff`ghcr.io/quad4-software/meshchatx`
Ta5d6ff```Ta5d6ffbash
docker compose up -d
Ta5d6ff```
Ta5d6ff```Ta5d6ffbash
docker run -d --name reticulum-meshchatx Tffea00\
--restart unless-stopped Tffea00\
--security-opt no-new-privileges:true Tffea00\
-p T79c0ff127.0.0.1:8000:8000 Tffea00\
-v meshchatx-config:/config Tffea00\
ghcr.io/quad4-software/meshchatx:latest
Ta5d6ff```
GHCR の代わりに Docker Hub の Ta5d6ff`quad4io/meshchatx:latest` を使えます。
デフォルトの compose ファイル:
Tff7b72- ホスト Ta5d6ff`127.0.0.1:8000` -> コンテナポート Ta5d6ff`8000`
Tff7b72- Docker の名前付きボリューム **`meshchatx-config`** -> **`/config`**(イメージの **meshchat** ユーザー UID 1000 と整合し、bind mount 用のホスト側 Ta5d6ff`chown` が不要になりやすい)
**任意: ホストディレクトリをマウントする**
ボリューム行を Ta5d6ff`-v "$(pwd)/meshchat-config:/config"` に置き換えます(Compose ではサービスの Ta5d6ff`volumes` を変更)。コンテナは **UID 1000** で動きます。ホスト側ディレクトリはその UID で書き込み可能にしてください(例: Ta5d6ff`sudo chown -R 1000:1000 ./meshchat-config`)。初回起動前に空ディレクトリを作成しておくと、Docker が不適切な権限で作成するのを避けられます。
**名前付きボリュームの確認や削除**
Ta5d6ff```Ta5d6ffbash
docker volume inspect meshchatx-config
docker rm -f reticulum-meshchatx
docker volume rm meshchatx-config
Ta5d6ff```
Tc9d1d9## リリースアーティファクトからのインストール
Tc9d1d9### 1) Linux AppImage (x64/arm64)
Tff7b721. リリースから Ta5d6ff`ReticulumMeshChatX-v<バージョン>-linux-<アーキテクチャ>.AppImage` をダウンロード。
Tff7b722. 実行権限を付与して起動:
Ta5d6ff```Ta5d6ffbash
chmod +x ./ReticulumMeshChatX-v*-linux-*.AppImage
./ReticulumMeshChatX-v*-linux-*.AppImage
Ta5d6ff```
Tc9d1d9### 2) Debian/Ubuntu `.deb` (x64/arm64)
Tff7b721. Ta5d6ff`ReticulumMeshChatX-v<バージョン>-linux-<アーキテクチャ>.deb` をダウンロード。
Tff7b722. インストール:
Ta5d6ff```Ta5d6ffbash
sudo apt install ./ReticulumMeshChatX-v*-linux-*.deb
Ta5d6ff```
Tc9d1d9### 3) RPM ベースのシステム
Tff7b721. リリースに Ta5d6ff`ReticulumMeshChatX-v<バージョン>-linux-<アーキテクチャ>.rpm` がある場合はダウンロード。
Tff7b722. インストール:
Ta5d6ff```Ta5d6ffbash
sudo rpm -Uvh ./ReticulumMeshChatX-v*-linux-*.rpm
Ta5d6ff```
Tc9d1d9### 4) Python wheel (`.whl`)
リリースの wheel にはビルド済みの Web アセットが含まれます。
Ta5d6ff```Ta5d6ffbash
pip install ./reticulum_meshchatx-*-py3-none-any.whl
meshchatx --headless
Ta5d6ff```
Ta5d6ff`pipx` もサポート:
Ta5d6ff```Ta5d6ffbash
pipx install ./reticulum_meshchatx-*-py3-none-any.whl
Ta5d6ff```
Tc9d1d9## ソースからの実行(Web サーバーモード)
開発時やローカルのカスタムビルド向け。
Ta5d6ff```Ta5d6ffbash
git clone https://git.quad4.io/RNS-Things/MeshChatX.git
Tffa657cd MeshChatX
corepack Tffa657enable
pnpm config Tffa657set verify-store-integrity Tffa657true
pnpm install --frozen-lockfile
pip install Ta5d6ff"poetry==2.3.4"
poetry check --lock
poetry install
pnpm run build-frontend
poetry run python -m meshchatx.meshchat --headless --host T79c0ff127.0.0.1
Ta5d6ff```
上記インストールコマンドに関する補足:
Tff7b72- Ta5d6ff`pnpm install --frozen-lockfile` は Ta5d6ff`pnpm-lock.yaml` の更新を拒否し、ロックファイルが Ta5d6ff`package.json` と一致しない場合は失敗します。これにより、想定外の上流バージョンが暗黙的にインストールされるのを防げます。
Tff7b72- Ta5d6ff`verify-store-integrity=true` はプロジェクトの Ta5d6ff`.npmrc` にも設定されています。上記の Ta5d6ff`pnpm config set` の行はユーザー設定側も明示的に固めるためのものです。
Tff7b72- pnpm v10 以降、ライフサイクルスクリプト (Ta5d6ff`preinstall`/Ta5d6ff`postinstall`) はデフォルトでブロックされます。インストールスクリプトを実行できるのは Ta5d6ff`package.json` の Ta5d6ff`pnpm.onlyBuiltDependencies` に列挙されたパッケージ(現在 Ta5d6ff`electron`、Ta5d6ff`electron-winstaller`、Ta5d6ff`esbuild`)だけです。
Tff7b72- Ta5d6ff`poetry check --lock` は Ta5d6ff`poetry.lock` と Ta5d6ff`pyproject.toml` が同期していない場合に即時失敗します。その後の Ta5d6ff`poetry install` はロックファイルからのみ解決します。
Tff7b72- 厳密にロックファイルだけで Poetry をインストールしたい場合は、CI と揃えるために Ta5d6ff`pip install "poetry==2.3.4"` で Poetry バージョンを固定してください。
意図的に依存を更新する場合は、`pnpm update` / Ta5d6ff`poetry update` を専用コミットで実行し、push 前にロックファイルの diff を必ず確認してください。
Tc9d1d9## サンドボックスで実行(Linux)
ネイティブの Ta5d6ff`meshchatx`(エイリアス: Ta5d6ff`meshchat`)をファイルシステムをより隔離した状態で動かすには、Reticulum と Web UI 向けの通常のネットワークアクセスを保ちつつ **Firejail** または **Bubblewrap**(Ta5d6ff`bwrap`)を使えます。詳しい例(pip/pipx、Poetry、USB シリアルの注意)は次を参照:
Tff7b72- [Ta5d6ff`docs/meshchatx_linux_sandbox.md`](../docs/meshchatx_linux_sandbox.md)
同梱または同期された Ta5d6ff`meshchatx-docs` から配信する場合、同じページがアプリ内 **ドキュメント** 一覧(MeshChatX ドキュメント)にも表示されます。
Tc9d1d9## Linux デスクトップ: 絵文字フォント
絵文字ピッカーはシステムフォント(Electron/Chromium)で標準 Unicode 絵文字を描画します。絵文字が空の四角(「豆腐」)になる場合はカラー絵文字パッケージをインストールし、アプリを再起動してください。
| ディストリビューション(例) | パッケージ |
| ---------------------------- | --------------------------------------------------------------------- |
| Arch Linux, Artix, Manjaro | Ta5d6ff`noto-fonts-emoji`(Ta5d6ff`sudo pacman -S noto-fonts-emoji`) |
| Debian, Ubuntu | Ta5d6ff`fonts-noto-color-emoji`(Ta5d6ff`sudo apt install fonts-noto-color-emoji`) |
| Fedora | Ta5d6ff`google-noto-emoji-color-fonts` |
インストール後も表示されない場合は Ta5d6ff`fc-cache -fv` を実行してください。最小インストールでは記号の網羅用に Ta5d6ff`noto-fonts` も任意で入れてください。
Tc9d1d9## ソースからのデスクトップパッケージビルド
スクリプトは Ta5d6ff`package.json` と Ta5d6ff`Taskfile.yml` に定義されています。
Tc9d1d9### Linux x64 AppImage + DEB
Ta5d6ff```Ta5d6ffbash
pnpm run dist:linux-x64
Ta5d6ff```
Tc9d1d9### Linux arm64 AppImage + DEB
Ta5d6ff```Ta5d6ffbash
pnpm run dist:linux-arm64
Ta5d6ff```
Tc9d1d9### RPM
Ta5d6ff```Ta5d6ffbash
pnpm run dist:rpm
Ta5d6ff```
Task 経由:
Ta5d6ff```Ta5d6ffbash
task dist:fe:rpm
Ta5d6ff```
Tc9d1d9## コンテナビルド(wheel、AppImage、deb、rpm)
Ta5d6ff`Dockerfile.build` は CI と同じ手順(Poetry、pnpm、`task`、APT 依存)を実行します。**linux/amd64** 向け(NodeSource の amd64 tarball、Task の amd64 バイナリ)。デフォルトは全ターゲット。build-arg で上書き可能。
Ta5d6ff`MESHCHATX_BUILD_TARGETS` の値: Ta5d6ff`all`(既定)、`wheel`、または Ta5d6ff`electron`(x64 / arm64 の AppImage + deb、RPM はベストエフォート、wheel なし)。
ビルド:
Ta5d6ff```Ta5d6ffbash
docker build -f Dockerfile.build -t meshchatx-build:local .
Ta5d6ff```
wheel のみ:
Ta5d6ff```Ta5d6ffbash
docker build -f Dockerfile.build --build-arg Te6edf3MESHCHATX_BUILD_TARGETSTff7b72=wheel -t meshchatx-build:wheel .
Ta5d6ff```
完成したイメージから Ta5d6ff`/artifacts` をホストにコピー:
Ta5d6ff```Ta5d6ffbash
Te6edf3cidTff7b72=Tff7b72$(docker create meshchatx-build:localTff7b72)
docker cp Ta5d6ff"Tffd700${Te6edf3cidTffd700}Ta5d6ff:/artifactsTa5d6ff" ./meshchatx-artifacts
docker rm Ta5d6ff"Tffd700${Te6edf3cidTffd700}Ta5d6ff"
Ta5d6ff```
Tc9d1d9## アーキテクチャサポート
Tff7b72- Docker イメージ: Ta5d6ff`amd64`, Ta5d6ff`arm64`
Tff7b72- Linux AppImage: Ta5d6ff`x64`, Ta5d6ff`arm64`
Tff7b72- Linux DEB: Ta5d6ff`x64`, Ta5d6ff`arm64`
Tff7b72- Windows: Ta5d6ff`x64`, Ta5d6ff`arm64`(ビルドスクリプトあり)
Tff7b72- macOS: ローカルビルド向けにビルドスクリプトあり(`arm64`, Ta5d6ff`universal`)
Tff7b72- Android: universal APK のみ([`android/README.md`](../android/README.md) 参照)
Tc9d1d9## Android
MeshChatX はネイティブ Android APK のビルドに対応しています(Termux のみに限りません)。
Tc9d1d9### ソースから APK をビルド
リポジトリのルートで:
Ta5d6ff```Ta5d6ffbash
T8b949e# 1) android/app/build.gradle で使う Chaquopy 用ホイールをビルド
bash scripts/build-android-wheels-local.sh
T8b949e# 2) universal APK をビルド(1 回の実行で debug 1 本 + release 1 本;android/README.md 参照)
Tffa657cd android
./gradlew --no-daemon :app:assembleDebug :app:assembleRelease
Ta5d6ff```
**単一**の Android バリアント。Gradle が Ta5d6ff`meshchatx/` ツリー全体を Ta5d6ff`app/src/main/python/meshchatx/` に同期し、オフラインリポジトリ用ホイールも含みます。ドキュメントおよび公開ビルドは **universal** パッケージのみです。実行ごとにデバッグ APK 1 本とリリース APK 1 本が生成され、それぞれ Ta5d6ff`android/app/build.gradle` で選んだ全ネイティブ ABI を含みます。
Tff7b72- デバッグ: Ta5d6ff`android/app/build/outputs/apk/debug/app-debug.apk`
Tff7b72- リリース: Ta5d6ff`android/app/build/outputs/apk/release/app-release-unsigned.apk`
備考:
Tff7b72- リリース成果物は、署名を設定するまで既定で未署名(`scripts/sign-android-apks.sh`)。
Tff7b72- universal APK に埋め込まれるネイティブ ABI は Ta5d6ff`android/app/build.gradle` の一覧(`armeabi-v7a` 有効時を含む)。`armeabi-v7a` 用ホイールのビルドには Ta5d6ff`ANDROID_HOME` の Android SDK が必要(`android/README.md` 参照)。
Tff7b72- リポジトリルートに Ta5d6ff`dist/reticulum_meshchatx-*.whl` があると(例: Ta5d6ff`python -m build --wheel -o dist .`)、同梱リポジトリの更新で PyPI よりその MeshChatX ホイールを優先。CI では Android Gradle の前にそのホイールをビルドします。
追加ドキュメント:
Tff7b72- [Ta5d6ff`docs/meshchatx_on_android_with_termux.md`](../docs/meshchatx_on_android_with_termux.md)
Tff7b72- [Ta5d6ff`android/README.md`](../android/README.md)
Tc9d1d9## 設定
| 引数 | 環境変数 | デフォルト | 説明 |
| -------------------------- | ---------------------------------------- | ----------- | --------------------------------------------------------------------------------------- |
| Ta5d6ff`--host` | Ta5d6ff`MESHCHAT_HOST` | Ta5d6ff`127.0.0.1` | Web サーバーのバインドアドレス |
| Ta5d6ff`--port` | Ta5d6ff`MESHCHAT_PORT` | Ta5d6ff`8000` | Web サーバーポート |
| Ta5d6ff`--no-https` | Ta5d6ff`MESHCHAT_NO_HTTPS` | Ta5d6ff`false` | HTTPS を無効化 |
| Ta5d6ff`--ssl-cert` / Ta5d6ff`--ssl-key` | Ta5d6ff`MESHCHAT_SSL_CERT` / Ta5d6ff`MESHCHAT_SSL_KEY` | (なし) | PEM 証明書と鍵のパス。両方指定。アイデンティティの Ta5d6ff`ssl/` 下の自動生成証明書を上書き。 |
| Ta5d6ff`--rns-log-level` | Ta5d6ff`MESHCHAT_RNS_LOG_LEVEL` | (なし) | Reticulum(RNS)のログレベル(上記の名前または数値)。CLI は環境変数より優先。 |
| Ta5d6ff`--headless` | Ta5d6ff`MESHCHAT_HEADLESS` | Ta5d6ff`false` | ブラウザを自動で開かない |
| Ta5d6ff`--auth` | Ta5d6ff`MESHCHAT_AUTH` | Ta5d6ff`false` | 基本認証を有効化 |
| Ta5d6ff`--reset-password` | Ta5d6ff`MESHCHAT_RESET_PASSWORD` | Ta5d6ff`false` | 保存されたパスワードハッシュを消去し、Web UI から新しいパスワードを設定できるようにする |
| Ta5d6ff`--storage-dir` | Ta5d6ff`MESHCHAT_STORAGE_DIR` | Ta5d6ff`./storage` | データディレクトリ |
| Ta5d6ff`--public-dir` | Ta5d6ff`MESHCHAT_PUBLIC_DIR` | 自動/同梱 | フロントエンドのディレクトリ(同梱資産なしのソースインストールで必要) |
Tc9d1d9## ブランチ
| ブランチ | 目的 |
| -------- | ---------------------------------------------------------- |
| Ta5d6ff`master` | 安定版リリース。本番向けのコードのみ。 |
| Ta5d6ff`dev` | 活発な開発。不安定または不完全な変更を含む場合があります。 |
Tc9d1d9## 開発
Ta5d6ff`Taskfile.yml` のよく使うタスク:
Ta5d6ff```Ta5d6ffbash
task install
task lint:all
task test:all
task build:all
Ta5d6ff```
Ta5d6ff`Makefile` のショートカット:
| コマンド | 説明 |
| -------------- | --------------------------------------- |
| Ta5d6ff`make install` | pnpm と poetry の依存関係をインストール |
| Ta5d6ff`make run` | poetry 経由で MeshChatX を実行 |
| Ta5d6ff`make build` | フロントエンドをビルド |
| Ta5d6ff`make lint` | eslint と ruff を実行 |
| Ta5d6ff`make test` | フロントエンドとバックエンドのテスト |
| Ta5d6ff`make clean` | ビルド成果物と node_modules を削除 |
Tc9d1d9## バージョン管理
このリポジトリの現在のバージョンは Ta5d6ff`4.6.2` です。
Tff7b72- リリースのバージョン上げは **`package.json` の `version` のみ**編集します。
Tff7b72- **`pnpm run version:sync`**(**`pnpm run build`** 開始時にも実行)で、**`pyproject.toml`**、**`meshchatx/src/version.py`**、**`THIRD_PARTY_NOTICES.txt`**(製品行)、**README** / **lang/README.\***(現在のバージョン行)、**Ta5d6ff`docs/meshchatx_on_raspberry_pi.md`** の pipx 例、**`packaging/arch/PKGBUILD`** の補助フィールドに反映します。
Tff7b72- **`meshchatx.__version__`** は **`meshchatx/src/version.py`** から読み、**`meshchatx.src`** をインポートしないため、単なる Ta5d6ff`import meshchatx` は軽量のままです。
Tff7b72- **Changelog** のエントリはリリース時に手作業のままです。
Tc9d1d9## セキュリティ
Tff7b72- [Ta5d6ff`SECURITY.md`](../SECURITY.md)
Tff7b72- [Ta5d6ff`LEGAL.md`](../LEGAL.md)
Tff7b72- アプリランタイムの組み込み整合性チェックと既定の HTTPS/WSS。
Tff7b72- GitHub Actions での CI およびリリースビルド。
Tc9d1d9## 言語の追加
作業手順: ArgosTranslate から ローカル LLM(Qwen 3 + Gemma 4)へ。
そのあと、LXMF 等で修正を歓迎します。
ロケールの検出は自動です。`meshchatx/src/frontend/locales/` に新しいファイル(例: Ta5d6ff`xx.json`)を追加し、`en.json` と同じキーに加え、セレクタ表示用の Ta5d6ff`_languageName` を最上位に置きます。`en.json` をコピーし手作業で訳すこともできます。**機械補助は任意**で、求められません。
**任意: Argos Translate で土台** -- Ta5d6ff`en.json` から下書きするには Ta5d6ff`scripts/argos_translate.py`(整形・カラー出力、 Ta5d6ff`{count}` 等の保護)を使えます。
Ta5d6ff```Ta5d6ffbash
T8b949e# 必要なら argostranslate を導入
pipx install argostranslate
T8b949e# 翻訳スクリプトを実行
python scripts/argos_translate.py --from en --to xx --input meshchatx/src/frontend/locales/en.json --output meshchatx/src/frontend/locales/xx.json --name Ta5d6ff"言語名"
Ta5d6ff```
機械下書きのあと、文法・文脈・トーンは LLM か人が確認(フォーマル/カジュアル等)。
Ta5d6ff`pnpm test -- tests/frontend/i18n.test.js --run` で Ta5d6ff`en.json` とのキー一致を検証。
その他のコードの変更は必要ありません。アプリ、言語セレクター、およびテストは、ビルド時に Ta5d6ff`meshchatx/src/frontend/locales/` ディレクトリからロケールを検出します。
Tc9d1d9## 寄付
寄付は任意です。このアプリを開発するための時間と労力に充てられます。
**寄付の方法:** [Ta5d6ff`donate.md`](../donate.md)(Monero、Ko-Fi、Buy Me a Coffee)。
Tc9d1d9## クレジット
Tff7b72- [Tff7b72Liam Cottle](Te6edf3https://github.com/liamcottle) - オリジナル Reticulum MeshChat
Tff7b72- [Tff7b72RFnexus](Te6edf3https://github.com/RFnexus) - micron パーサー(JavaScript)
Tff7b72- [Tff7b72markqvist](Te6edf3https://github.com/markqvist) - Reticulum, LXMF, LXST
Tc9d1d9## ライセンス
プロジェクト独自の部分は 0BSD です。
Reticulum MeshChat 由来の元の上流部分は MIT のままです。
全文と通知は [Ta5d6ff`../LICENSE`](../LICENSE) を参照してください。
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────